The following abbreviations that may be found in the specification and/or the drawing figures are defined as follows:                AJAX Asynchronous Java Script and XML        API Application Programming Interface        CSS locator Selector that matches against an element in a document tree        DOM Document Object Model        DVR Digital Video Recorder        FF browser Firefox (open source Mozilla-based)        GUI Graphical User Interface        HTML Hypertext Markup Language        ID Unique Identifier        IDE Integrated Development Environment        IE Internet Explorer        JNI Java Native Interface        MIT Massachusetts Institute of Technology        OpenCV Open Source Computer Vision Library        OS Operating System        RPC Remote Procedure Call        SDK Software Development Kit        ID Unique Identifier        UI User Interface        XML Extensible Markup Language        
The user-facing portion of any computer or mobile application, also called the front-end, is notoriously difficult to test automatically.
User-facing applications, such as web applications, change frequently. For example, the layout is adjusted when new features are added, and the graphical user interface (GUI) is improved, refreshed, translated or otherwise adapted for different needs or to different markets.
There is also the well-known problem with dynamic content, such as ads, stock tickers or incoming email messages or notifications. Additionally, network latency, which can manifest itself when using AJAX or other forms of scripting, and when the content is loaded from different geographic locations. All these factors combined pose a significant challenge for test automation, because they introduce an element of variability and unpredictability. Unpredictable software changes represent the worst-case scenario, since they go against the entire concept of using computers to test other computers automatically.